<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        <h1>v8 引擎解析js代码</h1>
        <p>一切解析都是为了让cpu能够运行代码,运行代码的同时 进行优化代码速度 这就是v8引擎,javascript解析器所做的事情</p>
        <p>1:首先拿到js源代码 进行paser模块 解析,会生成一个虚拟dom树(ast)如果一个函数从未调用过一次就不会将这段代码放进生成的ast树中,进行生成字节码 到 ignition模块</p>
        <p>2:拿到生成的ast会进行ignition模块(翻译为点火装置),ignition会进行解析ast生成字节码;ignition模块会在生成字节码的时候先去(收集和观察)一个函数是否多次调用,<br>
            如果多次调用会将函数标记为热点函数,并去生成一个turbofan(翻译为涡轮加速器)进行turbofan模块
        </p>
        <p>3: turbofan(翻译为涡轮加速器),turbofan会将ast产生的字节码进行解析生成一个机器码,机器码会代替cpu进行运行代码;如果一个代码生成的函数所做的事情有变化,就会进行一个事情反解码<br>,重新
            生成字节码 并进行运行,也会进行语法收集和分析 判断会不会再次生成turbofan
        </p>
    </div>
</body>

</html>